<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <ul>
        <li>1</li>
        <li>2</li>
        <li>3</li>
    </ul>

    <script>
        var lis1 = document.querySelectorAll("ul li");
        var lisCopy1 = [].slice.call(lis1);
        var lis2 = document.querySelector("ul").children;
        var lisCopy2 = [].slice.call(lis2);
        var lis3 = document.getElementsByTagName("li");
        var lisCopy3 = Array.prototype.slice.call(lis3)

        console.log( lis1 , lisCopy1 )
        // lis1.pop()
        console.log( lisCopy1.pop() )
        console.log( lis2 , lisCopy2 )
        lisCopy2.reverse()
        console.log(lisCopy2)
        console.log( lis3 , lisCopy3 )
        // lis3.splice(0,1)


        function fn(){
            var args = arguments;
            var argsCopy =  Array.prototype.slice.call(args)
            console.log( args )
            console.log(argsCopy)
            // args.push("hello")
            console.log( [...arguments] )
            console.log( Array.from(arguments) )
        }

        fn(1,2,3,4,5,6,7,8,9)

        // 伪数组转成真数组
        // es5 
        // Array.prototype.slice.call(伪数组)   使用slice方法创建一个数组的副本。
        // [].slice.call(伪数组)

        // es6 
            // ... 扩展运算符  可以展开一层对象或数组
            // [...伪数组]

        // es6 
            // Array.from(伪数组)  可以将类数组对象或可迭代对象转换成新的数组实例。
        var arr1 = [1,2,3]
        var arr2 = ["a","b","c"]
        console.log(arr1 , arr2)
    </script>
</body>
</html>